#pragma once

enum CAMERA_POSITIONS
{
	CAM_SOUTH,
	CAM_WEST,
	CAM_NORTH,
	CAM_EAST,
	CAM_CENTER
};

enum CAM_MOVEMENT
{
	NO_MOVEMENT,
	CLOCKWISE_POS,
	COUNTERCLOCKWISE_POS,
	CLOCKWISE_UP_VEC,
	COUNTERCLOCK_UP_VEC,
	XFORWARD,
	XBACKWARD,
	ZFORWARD,
	ZBACKWARD,
	CENTER_UP,
};

enum TILE_TYPES
{
	STRAIGHT,
	ELBOW,
	THREEWAY,
};

enum DIRECTION
{
	NORTH,
	EAST,
	SOUTH,
	WEST,
};

enum EXTRA_TILE_POSITIONS
{
	TOP1,
	TOP3,
	TOP5,
	RIGHT1,
	RIGHT3,
	RIGHT5,
	BOTTOM5,
	BOTTOM3,
	BOTTOM1,
	LEFT5,
	LEFT3,
	LEFT1,
};

//Controller States
enum CONTROLLER_STATE
{
	MENU,
	GAME,
	END_GAME
};

//Variables to dictate which menu state we are in
enum MENU_STATE
{
	MAIN,
	CHARACTER_NUM_ENTER,
	CHARACTER_SELECT,
	OPTIONS,
	CREDITS,
	QUIT,
};

//player turn states
enum PLAYER_TURN_STATES
{
	PLACE_TILE,
	CHOOSE_POWER,
	USE_POWER,
	MOVE_PLAYER,
	CHECK_FOR_WIN,
	PAUSE,
};

//All the types of buttons needed for the main menu
enum MENU_BUTTON_TYPES
{
	PLAY_BUTTON,
	OPTIONS_BUTTON,
	CREDITS_BUTTON,
	QUIT_BUTTON,
	RETURN_BUTTON,
	PLAYER_BUTTON
};

//All the types of buttons needed for the main game
enum GAME_BUTTON_TYPES
{
	LEFTCAM_BUTTON,
	RIGHTCAM_BUTTON,
	UPCAM_BUTTON
};

//All the types of buttons needed for the end game screen
enum END_GAME_BUTTON_TYPES
{
	MENU_BUTTON,
	REPLAY_BUTTON,
	END_GAME_BUTTON
};

//Power up return types
enum POWER_UP_RETURN
{
	STAY,
	MOVE,
	NOMOVE,
};

enum LIGHT_TYPES
{
	POINT_LIGHT,
	SPOT_LIGHT,
	DIR_LIGHT,//directional light, This is equivalent to using a point light source at an infinite distance. 
};

enum MATERIAL_COLORS
{
	WHITE,
	GREEN,
	RED,
};